#pragma once
#include <iostream>

struct image_t {
	int h = 0;									// height
	int w = 0;									// width
	int c = 0;									// number of chanels (3 - for RGB)
	float			**rgbf = 0;                  // pointer to the image data   n * r + n*g + n*b
	unsigned char	**rgb8 = 0;					// pointer to the image data   n * r + n*g + n*b
	unsigned short	**rgb16 = 0;				// pointer to the image data   n * r + n*g + n*b
};

struct st_dlm_data
{
	image_t			img;
};

//==========================================================================================
enum PRECISION_MODE
{
	PRECISION_FP32,
	PRECISION_FP16,
	PRECISION_INT8,
};

struct st_trans_model_input 
{
	std::string cfg_path;
	std::string model_path;

	PRECISION_MODE precison = PRECISION_FP16;
	std::string gpu_model = "NVIDIA GeForce RTX 3060";

	std::string trans_path;
};

struct st_encrypt_header {
    size_t struct_size;   // Size of the st_encrypt_info_ovino structure
    size_t xml_size;      // Size of the XML file
    size_t bin_size;      // Size of the BIN file
};


// struct st_encrypt_info
// {
// 	char gpu_model[100] = {0};

// 	int batch_size = 0;
// 	int input_channel = 0;
// 	int image_width = 0;
// 	int image_height = 0;

// 	int engine_size = 0;
// };

// st_encrypt_info_ovino 结构体用于存储加密模型的相关信息
struct st_encrypt_info_ovino
{


	char gpu_model[100] = {0}; // 存储 GPU 型号，字符数组初始化为 0

	int batch_size = 0; // 批处理大小
	int input_channel = 0; // 输入通道数
	int image_width = 0; // 输入图像的宽度
	int image_height = 0; // 输入图像的高度

	bool dynamic; // 是否动态分配
	int engine_size = 0; // 引擎大小

	st_encrypt_info_ovino()
	{
		memset(this, 0, sizeof(st_encrypt_info_ovino));
	}
};

